/**
 * @filename:SysConfigServiceImpl 2022年1月27日
 * @project Wonder wallet Framework  V1.0
 * Copyright(c) 2018 LuZhongren Co. Ltd. 
 * All right reserved. 
 */
package com.wonder.admin.service.impl;

import com.wonder.admin.domain.SysConfig;
import com.wonder.admin.mapper.SysConfigDao;
import com.wonder.admin.service.SysConfigService;
import com.wonder.common.constants.Constants;
import com.wonder.framework.redis.RedisCache;
import com.wonder.admin.request.SysConfigRequest;
import com.wonder.common.utils.StringUtils;


import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;


/**   
 * @Description:TODO(系统配置管理服务实现)
 *
 * @version: V1.0
 * @author: LuZhongren
 * 
 */
@Service
public class SysConfigServiceImpl  extends ServiceImpl<SysConfigDao, SysConfig> implements SysConfigService  {

	@Autowired
    private RedisCache redisCache;
   /**
     * 修改系统配置管理信息
     * 
     * @param SysConfig信息
     * @return 结果
     */
    @Override
    public int updateEx(SysConfig sysConfig){
       if(sysConfig!=null)
		     return this.baseMapper.updateById(sysConfig);
       return 0;
    }
    
    /**
     * 获取基本配置KEY-Value结构
     * @return
     */
    @Override
    public Map<String,Object> getSysConfig(){
    	
    	List<SysConfig> list=this.list();
    	Map<String,Object> map=new HashMap<>();
    	for(SysConfig item:list) {
    		map.put(item.getName(), item.getData());
    	}
    	
    	return map;   	
    	
    }
    
    
    /**
     * 获取配置
     * @return
     */
    @Override
    public String getKey(String key){
    	
    	List<SysConfig> list=this.list();
    	Map<String,Object> map=new HashMap<>();
    	for(SysConfig item:list) {
    		map.put(item.getName(), item.getData());
    	}
    	if(map.containsKey(key)) return map.get(key).toString();
    	
    	return null;   	
    	
    }
    /**
     * 从Cache中获取配置值
     * @param key
     * @return
     */
   @Override 
   public String getCacheKey(String key){
    	
    	List<SysConfig> list=redisCache.getCacheObject(Constants.SYS_CONFIG_KEY);
    	if(list==null) {
    		list=this.list();
    		redisCache.setCacheObject(Constants.SYS_CONFIG_KEY, list, 120,TimeUnit.SECONDS );
    	}
    			//this.list();
    	Map<String,Object> map=new HashMap<>();
    	for(SysConfig item:list) {
    		map.put(item.getName(), item.getData());
    	}
    	if(map.containsKey(key)) return map.get(key).toString();
    	
    	return null;   	
    	
    }
    
    
    
    /**
	 * Description:系统配置管理分页返回
	 * @request:检索条件
	 * @page：分页参数
	 * @return:分页记录
	 */
	@Override 
	public IPage<SysConfig> selectList(SysConfigRequest request, Page<SysConfig> page){
	    LambdaQueryWrapper<SysConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
	             
        if (StringUtils.isNotBlank(request.getName())) {
			lambdaQueryWrapper.eq(SysConfig::getName, request.getName());
		} 
       
		lambdaQueryWrapper.orderByDesc(SysConfig::getId);	
		Page<SysConfig> selectPage = this.baseMapper.selectPage(page, lambdaQueryWrapper);

		return selectPage;
    }
    
	
}